using System;
using System.Collections.Generic;
using System.Text;

namespace Coriander.Google.Services.Authentication
{
    /// <summary>
    /// Supported client login account types
    /// </summary>
    /// <remarks>
    /// See: http://code.google.com/apis/accounts/AuthForInstalledApps.html#Request</remarks>
    public struct ClientLoginAccountType
    {
        private readonly String value;

        /// <summary>
        /// Authenticate as a Google account only
        /// </summary>
        public static readonly ClientLoginAccountType Google =
            new ClientLoginAccountType("HOSTED");

        /// <summary>
        /// Authenticate as a hosted account only
        /// </summary>
        public static readonly ClientLoginAccountType Hosted =
            new ClientLoginAccountType("HOSTED");

        /// <summary>
        /// Authenticate first as a hosted account; if attempt fails, authenticate 
        /// as a Google account
        /// </summary>
        public static readonly ClientLoginAccountType HostedOrGoogle =
            new ClientLoginAccountType("HOSTED_OR_GOOGLE");

        /// <summary>
        /// The underlying string value of the current instance
        /// </summary>
        public String Value
        {
            get { return this.value; }
        }

        /// <summary>
        /// ctor: String
        /// </summary>
        private ClientLoginAccountType(String value)
        {
            this.value = value;
        }
    }
}
